home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / dev / lang / pcq12b.lzh / Include / Exec / Semaphores.i < prev    next >
Text File  |  1990-08-27  |  2KB  |  72 lines

  1. {
  2.     Semaphores.i for PCQ Pascal
  3. }
  4.  
  5. {$I "Include:Exec/Nodes.i"}
  6. {$I "Include:Exec/Lists.i"}
  7. {$I "Include:Exec/Ports.i"}
  8. {$I "Include:Exec/Tasks.i"}
  9.  
  10.     { Semaphore }
  11. type
  12.     Semaphore = record
  13.     sm_MsgPort : MsgPort;
  14.     sm_Bids    : Short;
  15.     end;
  16.     SemaphorePtr = ^Semaphore;
  17.  
  18. {  This is the structure used to request a signal semaphore }
  19.  
  20.     SemaphoreRequest = record
  21.     sr_Link    : MinNode;
  22.     sr_Waiter  : TaskPtr;
  23.     end;
  24.     SemaphoreRequestPtr = ^SemaphoreRequest;
  25.  
  26. { The actual semaphore itself }
  27.  
  28.     SignalSemaphore = record
  29.     ss_Link        : Node;
  30.     ss_NestCount    : Short;
  31.     ss_WaitQueue    : MinList;
  32.     ss_MultipleLink    : SemaphoreRequest;
  33.     ss_Owner    : TaskPtr;
  34.     ss_QueueCount    : Short;
  35.     end;
  36.     SignalSemaphorePtr = ^SignalSemaphore;
  37.  
  38.  
  39. Procedure AddSemaphore(sigsem : SignalSemaphorePtr);
  40.     External;
  41.  
  42. Function AttemptSemaphore(sigsem : SignalSemaphorePtr) : Boolean;
  43.     External;
  44.  
  45. Function FindSemaphore(name : String) : SignalSemaphorePtr;
  46.     External;
  47.  
  48. Procedure InitSemaphore(sigsem : SignalSemaphorePtr);
  49.     External;
  50.  
  51. Procedure ObtainSemaphore(sigsem : SignalSemaphorePtr);
  52.     External;
  53.  
  54. Procedure ObtainSemaphoreList(semlist : ListPtr);
  55.     External;
  56.  
  57. Function Procure(sem : SemaphorePtr; bid : MessagePtr) : Boolean;
  58.     External;
  59.  
  60. Procedure ReleaseSemaphore(sigsem : SignalSemaphorePtr);
  61.     External;
  62.  
  63. Procedure ReleaseSemaphoreList(siglist : ListPtr);
  64.     External;
  65.  
  66. Procedure RemSemaphore(sigsem : SignalSemaphorePtr);
  67.     External;
  68.  
  69. Procedure Vacate(sem : SemaphorePtr);
  70.     External;
  71.  
  72.